﻿#if UNITY_EDITOR
using System;
using System.Collections.Generic;
using UnityEditor;
/// <summary>
/// 编辑器收集资源
/// </summary>
public partial class ESF_Utility
{    
    #region Collect 收集资源
    #region 无参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <returns>参数</returns>
    public static List<T> Collect<T>()
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(new string[1] { globalAssetsFolderName }, enESF_AssetFilterClassify.None, enESF_AssetClassify.All, enESF_DependencyClassify.UnClude, null, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(new string[1] { globalAssetsFolderName }, enESF_AssetFilterClassify.None, enESF_AssetClassify.All, enESF_DependencyClassify.UnClude, null, null, _displayProgressBarClassify);
    }
    #endregion

    #region 一参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, enESF_AssetFilterClassify.None, enESF_AssetClassify.All, enESF_DependencyClassify.UnClude, null, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, enESF_AssetFilterClassify.None, enESF_AssetClassify.All, enESF_DependencyClassify.UnClude, null, null, _displayProgressBarClassify);
    }
    #endregion

    #region 二参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders, enESF_AssetFilterClassify _filter)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.All, enESF_DependencyClassify.UnClude, null, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders,
        string _filter)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.All, enESF_DependencyClassify.UnClude, null, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders, enESF_AssetFilterClassify _filter, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.All, enESF_DependencyClassify.UnClude, null, null, _displayProgressBarClassify);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders,
        string _filter, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.All, enESF_DependencyClassify.UnClude, null, null, _displayProgressBarClassify);
    }
    #endregion

    #region 三参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_assetClassify">资源分类</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders, enESF_AssetFilterClassify _filter, enESF_AssetClassify _assetClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, _assetClassify, enESF_DependencyClassify.UnClude, null, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_assetClassify">资源分类</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders,
        string _filter, enESF_AssetClassify _assetClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, _assetClassify, enESF_DependencyClassify.UnClude, null, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_assetClassify">资源分类</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders, enESF_AssetFilterClassify _filter, 
        enESF_AssetClassify _assetClassify, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, _assetClassify, enESF_DependencyClassify.UnClude, 
            null, null, _displayProgressBarClassify);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_assetClassify">资源分类</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders,string _filter,
        enESF_AssetClassify _assetClassify, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, _assetClassify, enESF_DependencyClassify.UnClude,
            null, null, _displayProgressBarClassify);
    }
    #endregion

    #region 四参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_assetClassify">资源分类</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders,
        enESF_AssetFilterClassify _filter, enESF_AssetClassify _assetClassify, enESF_DependencyClassify _dependencyClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, _assetClassify, _dependencyClassify, null, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_assetClassify">资源分类</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders,
        string _filter, enESF_AssetClassify _assetClassify, enESF_DependencyClassify _dependencyClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, _assetClassify, _dependencyClassify, null, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_assetClassify">资源分类</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders,
        enESF_AssetFilterClassify _filter, enESF_AssetClassify _assetClassify, enESF_DependencyClassify _dependencyClassify, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, _assetClassify, _dependencyClassify, null, null, _displayProgressBarClassify);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_assetClassify">资源分类</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders,
        string _filter, enESF_AssetClassify _assetClassify, enESF_DependencyClassify _dependencyClassify, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, _assetClassify, _dependencyClassify, null, null, _displayProgressBarClassify);
    }
    #endregion

    #region 五参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_assetClassify">资源分类</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders,
        enESF_AssetFilterClassify _filter, enESF_AssetClassify _assetClassify, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, _assetClassify, _dependencyClassify, _funIslegal, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_assetClassify">资源分类</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders,
        string _filter, enESF_AssetClassify _assetClassify, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, _assetClassify, _dependencyClassify, _funIslegal, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_assetClassify">资源分类</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders,
        enESF_AssetFilterClassify _filter, enESF_AssetClassify _assetClassify, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, _assetClassify, _dependencyClassify, _funIslegal, null, _displayProgressBarClassify);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_assetClassify">资源分类</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders,
        string _filter, enESF_AssetClassify _assetClassify, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, _assetClassify, _dependencyClassify, _funIslegal, null,_displayProgressBarClassify);
    }
    #endregion

    #region 六参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_assetClassify">资源分类</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <param name="_funIsForceExclude">是否强制排除回调</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders,
        enESF_AssetFilterClassify _filter, enESF_AssetClassify _assetClassify, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal, Func<T, bool> _funIsForceExclude)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, _assetClassify, _dependencyClassify, _funIslegal, _funIsForceExclude, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_assetClassify">资源分类</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <param name="_funIsForceExclude">是否强制排除回调</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders,
        string _filter, enESF_AssetClassify _assetClassify, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal, Func<T, bool> _funIsForceExclude)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, _assetClassify, _dependencyClassify, _funIslegal, _funIsForceExclude, enESF_DisplayProgressBarClassify.None);
    }


    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_assetClassify">资源分类</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <param name="_funIsForceExclude">是否强制排除回调</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders,
        enESF_AssetFilterClassify _filter, enESF_AssetClassify _assetClassify, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal, Func<T, bool> _funIsForceExclude,enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, OnTransFilter(_filter), _assetClassify, _dependencyClassify, _funIslegal,
            _funIsForceExclude, _displayProgressBarClassify);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_assetClassify">资源分类</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <param name="_funIsForceExclude">是否强制排除回调</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> Collect<T>(string[] _searchInFolders,
        string _filter, enESF_AssetClassify _assetClassify, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal, Func<T, bool> _funIsForceExclude, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(OnCreateCollectAssetArgument<T>(_searchInFolders, _filter, _assetClassify, _dependencyClassify, _funIslegal,
            _funIsForceExclude, _displayProgressBarClassify, null, null));
    }    
    #endregion
    
    #endregion

    #region CollectFile 收集文件
    #region 无参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>()
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(new string[1] { globalAssetsFolderName }, enESF_AssetFilterClassify.None, enESF_AssetClassify.File, enESF_DependencyClassify.UnClude, null, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(new string[1] { globalAssetsFolderName }, enESF_AssetFilterClassify.None, enESF_AssetClassify.File, enESF_DependencyClassify.UnClude, null, null, _displayProgressBarClassify);
    }
    #endregion

    #region 一参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, enESF_AssetFilterClassify.None, enESF_AssetClassify.File, enESF_DependencyClassify.UnClude, null, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, enESF_AssetFilterClassify.None, enESF_AssetClassify.File, enESF_DependencyClassify.UnClude, null, null, _displayProgressBarClassify);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_filter">过滤</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(enESF_AssetFilterClassify _filter)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(new string[1] { globalAssetsFolderName }, _filter, enESF_AssetClassify.File, enESF_DependencyClassify.UnClude, null, null, enESF_DisplayProgressBarClassify.None);
    }
    #endregion

    #region 二参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders, enESF_AssetFilterClassify _filter)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.File, enESF_DependencyClassify.UnClude, null, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders,
        string _filter)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.File, enESF_DependencyClassify.UnClude, null, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders, enESF_AssetFilterClassify _filter, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.File, enESF_DependencyClassify.UnClude, null, null, _displayProgressBarClassify);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders,
        string _filter, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.File, enESF_DependencyClassify.UnClude, null, null, _displayProgressBarClassify);
    }
    #endregion

    #region 三参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders,
        enESF_AssetFilterClassify _filter, enESF_DependencyClassify _dependencyClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.File, _dependencyClassify, null, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders,
        string _filter, enESF_DependencyClassify _dependencyClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.File, _dependencyClassify, null, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders,
        enESF_AssetFilterClassify _filter, enESF_DependencyClassify _dependencyClassify, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.File, _dependencyClassify, null, null, _displayProgressBarClassify);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders,
        string _filter, enESF_DependencyClassify _dependencyClassify, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.File, _dependencyClassify, null, null, _displayProgressBarClassify);
    }
    #endregion

    #region 四参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders,
        enESF_AssetFilterClassify _filter, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.File, _dependencyClassify, _funIslegal, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders,
        string _filter, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.File, _dependencyClassify, _funIslegal, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders,
        enESF_AssetFilterClassify _filter, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.File, _dependencyClassify, _funIslegal, null, _displayProgressBarClassify);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders,
        string _filter, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.File, _dependencyClassify, _funIslegal, null, _displayProgressBarClassify);
    }
    #endregion

    #region 五参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <param name="_funIsForceExclude">是否强制排除回调</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders,
        enESF_AssetFilterClassify _filter, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal, Func<T, bool> _funIsForceExclude)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.File, _dependencyClassify, _funIslegal, _funIsForceExclude, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <param name="_funIsForceExclude">是否强制排除回调</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders,
        string _filter, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal, Func<T, bool> _funIsForceExclude)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.File, _dependencyClassify, _funIslegal, _funIsForceExclude, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <param name="_funIsForceExclude">是否强制排除回调</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders,
        enESF_AssetFilterClassify _filter, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal, Func<T, bool> _funIsForceExclude, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.File, _dependencyClassify, _funIslegal, _funIsForceExclude, _displayProgressBarClassify);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <param name="_funIsForceExclude">是否强制排除回调</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFile<T>(string[] _searchInFolders,
        string _filter, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal, Func<T, bool> _funIsForceExclude, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, _filter, enESF_AssetClassify.File, _dependencyClassify, _funIslegal, _funIsForceExclude, _displayProgressBarClassify);
    }
    #endregion
    #endregion

    #region CollectFolder 收集文件夹

    #region 无参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <returns>参数</returns>
    public static List<T> CollectFolder<T>()
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(new string[1] { globalAssetsFolderName }, enESF_AssetFilterClassify.None, enESF_AssetClassify.Folder, enESF_DependencyClassify.UnClude, null, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFolder<T>(enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(new string[1] { globalAssetsFolderName }, enESF_AssetFilterClassify.None, enESF_AssetClassify.Folder, enESF_DependencyClassify.UnClude, null, null, _displayProgressBarClassify);
    }
    #endregion

    #region 一参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <returns>参数</returns>
    public static List<T> CollectFolder<T>(string[] _searchInFolders)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, enESF_AssetFilterClassify.None, enESF_AssetClassify.Folder, enESF_DependencyClassify.UnClude, null, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFolder<T>(string[] _searchInFolders, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, enESF_AssetFilterClassify.None, enESF_AssetClassify.Folder, enESF_DependencyClassify.UnClude, null, null, _displayProgressBarClassify);
    }
    #endregion

    #region 二参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFolder<T>(string[] _searchInFolders, enESF_DependencyClassify _dependencyClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, enESF_AssetFilterClassify.None, enESF_AssetClassify.Folder, _dependencyClassify, null, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFolder<T>(string[] _searchInFolders, enESF_DependencyClassify _dependencyClassify, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, enESF_AssetFilterClassify.None, enESF_AssetClassify.Folder, _dependencyClassify, null, null, _displayProgressBarClassify);
    }
    #endregion

    #region 三参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <returns>参数</returns>
    public static List<T> CollectFolder<T>(string[] _searchInFolders, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, enESF_AssetFilterClassify.None, enESF_AssetClassify.Folder, _dependencyClassify, _funIslegal, null, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFolder<T>(string[] _searchInFolders, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, enESF_AssetFilterClassify.None, enESF_AssetClassify.Folder, _dependencyClassify, _funIslegal, null, _displayProgressBarClassify);
    }
    #endregion

    #region 四参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <param name="_funIsForceExclude">是否强制排除回调</param>
    /// <returns>参数</returns>
    public static List<T> CollectFolder<T>(string[] _searchInFolders, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal, Func<T, bool> _funIsForceExclude)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, enESF_AssetFilterClassify.None, enESF_AssetClassify.Folder, _dependencyClassify, _funIslegal, _funIsForceExclude, enESF_DisplayProgressBarClassify.None);
    }

    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <param name="_funIsForceExclude">是否强制排除回调</param>
    /// <param name="_displayProgressBarClassify">进度条显示分类</param>
    /// <returns>参数</returns>
    public static List<T> CollectFolder<T>(string[] _searchInFolders, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal, Func<T, bool> _funIsForceExclude, enESF_DisplayProgressBarClassify _displayProgressBarClassify)
        where T : AbsESF_EditorCollectAsset
    {
        return Collect<T>(_searchInFolders, enESF_AssetFilterClassify.None, enESF_AssetClassify.Folder, _dependencyClassify, _funIslegal, _funIsForceExclude, _displayProgressBarClassify);
    }
    #endregion    
    #endregion

    #region Collect 收集资源【AbsESF_CollectAssetArgument<T>】
    /// <summary>
    /// 收集指定资源
    /// </summary>
    /// <typeparam name="T">资源参数类型</typeparam>
    /// <param name="_searchArgument">搜索参数</param>
    /// <returns>收集结果</returns>
    public static List<T> Collect<T>(AbsESF_CollectAssetArgument<T> _searchArgument)
        where T : AbsESF_EditorCollectAsset
    {
        List<T> result = new List<T>();
        if (_searchArgument.searchInFolders != null && _searchArgument.searchInFolders.Length > 0)
        {
            string[] arrGuids = AssetDatabase.FindAssets(_searchArgument.filter, _searchArgument.searchInFolders);
            if (arrGuids != null && arrGuids.Length > 0)
            {
                List<string> arrPaths = new List<string>();
                string path = string.Empty;
                string[] temps = null;
                foreach (string guid in arrGuids)
                {
                    path = AssetDatabase.GUIDToAssetPath(guid);
                    if (!arrPaths.Contains(path))
                    {
                        arrPaths.Add(path);
                    }
                }
                switch (_searchArgument.dependencyClassify)
                {
                    case enESF_DependencyClassify.InClude:
                        temps = AssetDatabase.GetDependencies(arrPaths.ToArray(), true);
                        if (temps != null && temps.Length > 0)
                        {
                            foreach (string d in temps)
                            {
                                if (!arrPaths.Contains(d))
                                {
                                    arrPaths.Add(d);
                                }
                            }
                        }
                        temps = null;
                        break;
                }

                bool isDisplayProgressBar = false;
                for (int i = 0; i < arrPaths.Count; i++)
                {
                    T node = (T)Activator.CreateInstance(typeof(T), arrPaths[i]);
                    bool isSuc = (_searchArgument.assetClassify & node.classify) == node.classify;
                    isSuc &= _searchArgument.funcIsLegal == null || _searchArgument.funcIsLegal.Invoke(node);
                    isSuc &= _searchArgument.funcIsForceExclude == null || !_searchArgument.funcIsForceExclude.Invoke(node);
                    if (isSuc)
                    {
                        node.Resolve(result.Count);
                        result.Add(node);
                    }
                    #region 显示进度条
                    bool isCancel = false;
                    string title = "Collect Asset";
                    string info = node.path;
                    float progress = (i + 1) / (float)arrPaths.Count;
                    switch (_searchArgument.displayProgressBarClassify)
                    {
                        case enESF_DisplayProgressBarClassify.None:
                            break;
                        case enESF_DisplayProgressBarClassify.Cancelable:
                            isDisplayProgressBar |= true;
                            if (_searchArgument.funcDisplayCancelableProgressBar != null)
                            {
                                isCancel = _searchArgument.funcDisplayCancelableProgressBar.Invoke(node, i + 1, arrPaths.Count);
                            }
                            else
                            {
                                isCancel = EditorUtility.DisplayCancelableProgressBar(title, info, progress);
                            }
                            break;
                        case enESF_DisplayProgressBarClassify.Normal:
                            isDisplayProgressBar |= true;
                            if (_searchArgument.actionDisplayProgressBar != null)
                            {
                                _searchArgument.actionDisplayProgressBar.Invoke(node, i + 1, arrPaths.Count);
                            }
                            else
                            {
                                EditorUtility.DisplayProgressBar(title, info, progress);
                            }
                            break;
                    }
                    if (isCancel)
                    {
                        result.Clear();
                        break;
                    }
                    #endregion
                }
                if (isDisplayProgressBar)
                {
                    EditorUtility.ClearProgressBar();
                }
            }
        }
        else
        {
            ESF_P.ESF_Error($"Collect [{typeof(T)}] is not set search folders.");
        }
        return result;
    }
    #endregion

    #region OnTransFilter 转换过滤值
    /// <summary>
    /// 过滤分类
    /// </summary>
    static readonly Dictionary<enESF_AssetFilterClassify, ESF_AssetFilterAttribute> mFilterClassifyMaping = typeof(enESF_AssetFilterClassify).ESF_EnumToAttribute<enESF_AssetFilterClassify, ESF_AssetFilterAttribute>();

    /// <summary>
    /// 转换过滤值
    /// </summary>
    /// <param name="_filter">过滤值</param>
    static string OnTransFilter(enESF_AssetFilterClassify _filter)
    {
        List<string> values = new List<string>();
        foreach (KeyValuePair<enESF_AssetFilterClassify, ESF_AssetFilterAttribute> key in mFilterClassifyMaping)
        {
            if ((key.Key & _filter) == key.Key)
            {
                values.Add(key.Value.filter);
            }
        }
        return values.ESF_Join(enESF_SeparatorSymbol.Space);
    }
    #endregion

    #region OnCreateCollectAssetArgument 创建收集资源参数
    /// <summary>
    /// 创建收集资源参数
    /// </summary>
    /// <typeparam name="T">资源节点</typeparam>
    /// <param name="_searchInFolders">搜索目录</param>
    /// <param name="_filter">过滤</param>
    /// <param name="_assetClassify">资源分类</param>
    /// <param name="_dependencyClassify">依赖项分类</param>
    /// <param name="_funIslegal">是否合法回调</param>
    /// <param name="_funIsForceExclude">是否强制排除回调</param>
    /// <param name="_displayProgressBarClassify">显示进度条分类</param>
    /// <param name="_displayProgressBar">显示进度条回调</param>
    /// <param name="_displayCancelableProgressBar">显示可取消进度条回调</param>
    /// <returns>参数</returns>
    static AbsESF_CollectAssetArgument<T> OnCreateCollectAssetArgument<T>(string[] _searchInFolders,
        string _filter, enESF_AssetClassify _assetClassify, enESF_DependencyClassify _dependencyClassify,
        Func<T, bool> _funIslegal, Func<T, bool> _funIsForceExclude,
        enESF_DisplayProgressBarClassify _displayProgressBarClassify,
        Action<T, int, int> _displayProgressBar,
        Func<T, int, int,bool> _displayCancelableProgressBar)
        where T : AbsESF_EditorCollectAsset
    {
        AbsESF_CollectAssetArgument<T> argument = new AbsESF_CollectAssetArgument<T>();
        argument.SetSearchInFolders(_searchInFolders);
        argument.SetFilter(_filter);
        argument.assetClassify = _assetClassify;
        argument.dependencyClassify = _dependencyClassify;
        argument.displayProgressBarClassify = _displayProgressBarClassify;
        argument.SetIsLegal(_funIslegal);
        argument.SetIsForceExclude(_funIsForceExclude);
        argument.SetDisplayProgressBar(_displayProgressBar);
        argument.SetDisplayCancelableProgressBar(_displayCancelableProgressBar);
        return argument;
    }
    #endregion
}
#endif
